package br.uff.es1.dao;

import br.uff.es1.Livro;
import java.util.ArrayList;
import java.util.Date;

public class LivroDAO {
    private ArrayList<Livro> livros;

    public LivroDAO() {
        this.livros = new ArrayList();
        this.inserir("teste 1", new Date(), 1, "Teste Autores", "Alguma Editora", "111", 50, 1, 111);
    }
    
    public boolean inserir(String titulo, Date dataCadastro, int edicao, String autores, String editora, String codigoBarras, double preco, int quantidade, int idFornecedor){
        Livro l = new Livro(titulo, dataCadastro, edicao, autores, editora, codigoBarras, preco, quantidade, idFornecedor);
        if(l == null){
            return false;
        }else{
            this.livros.add(l);
            return true;
        }
    }
    
    public ArrayList<Livro> obterTodos(){
        return this.livros;
    }
    
    public boolean remover(String titulo){
        int idLivro = this.pegarIdLivro(titulo);
        if(this.pegarIdLivro(titulo) == -1){
            return false;
        }else{
            this.livros.remove(idLivro);
            return true;
        }
    }
    
    public int pegarIdLivro(String titulo){
        for (int i = 0; i < livros.size(); i++) {
            if(this.livros.get(i).getTitulo().equalsIgnoreCase(titulo)){
                return i;
            }
        }
        return -1;
    }
    
    public int pegarIdLivroPorCodigo(String codigo){
        for (int i = 0; i < livros.size(); i++) {
            if(this.livros.get(i).getCodigoBarras().equalsIgnoreCase(codigo)){
                return i;
            }
        }
        return -1;
    }    
    
    public int obterQuantidadeEstoque(String codigo){
        for (int i = 0; i < livros.size(); i++) {
            if(this.livros.get(i).getCodigoBarras().equalsIgnoreCase(codigo)){
                return this.livros.get(i).getQuantidade();
            }
        }
        return 0;
    }     
    
    public Livro buscar(String titulo){
        for (int i = 0; i < livros.size(); i++) {
            if(this.livros.get(i).getTitulo().matches(titulo)){
                return this.livros.get(i);
            }
        }
        return null;
    }
    
    public void incrementarQuantidadeLivro(int idLivro, int qtdLivro){
        this.livros.get(idLivro).incrementarQuantidade(qtdLivro);
    }
    
    public void decrementarQuantidadeLivro(int idLivro){
        this.livros.get(idLivro).decrementarQuantidade();
    }
    
    public Livro buscarPorCodigo(String coodigo){
        for (int i = 0; i < livros.size(); i++) {
            if(this.livros.get(i).getCodigoBarras().equals(coodigo)){
                return this.livros.get(i);
            }
        }
        return null;
    }    
    
}
